package il.ac.bgu.cs.heuristics.graph.types;

import java.util.Set;

/**
 * 
 * @author Ronen Pinko
 * 
 */
public interface IActionGraph{

	/**
	 * returns the set of effect states
	 */
	Set<IState> getEffects();

	/**
	 * returns the set of precondition states
	 */
	Set<IState> getPreconditions();

	/**
	 * returns the set of effect states which don't contradict the goal state
	 */
	Set<IState> getNonContradictingEffects(IState goal);

	/**
	 * sets init state to the graph connecting it to all the precondition states
	 * that don't contradict it.
	 * 
	 * returns true if there is at least one precondition state that was
	 * connected to the new init state
	 */
	boolean setInitState(IState newInit);

	/**
	 * returns the path between origin and destination
	 */
	IPath getShortestPath(IState origin, IState dest);

}
